# -*- coding: utf-8 -*-
"""
@Author：mengying
@file： JD_extract.py
@date：2023/8/2 9:49
@email: 652044581@qq.com
@desc: 
"""
import re

from lxml import etree


def model_limit_length(data_list):
    max_length = 0
    model = ''
    for data in data_list:
        if data.__len__() > max_length:
            model = data
            max_length = data.__len__()
    return model


def get_web_data(html):
    data = {}

    html_str = html.replace(' ', '').replace('\n', '').replace('\r', '')
    pattern = '<spanclass="priceJ-p-.*?">(.*?)</span>'
    html_element = etree.HTML(html)
    web_price2 = re.compile(pattern).findall(html_str)
    web_price2 = web_price2[0] if web_price2 else ""

    web_price = web_price2
    data.update({'listed_price': web_price})
    data.update({'invoice_price': web_price})

    # 型号
    model_list = re.compile("<dt>型号</dt><dd>(.*?)</dd></dl>").findall(html_str)
    if not model_list:
        title_list = re.compile("<title>(.*?)</title>").findall(html_str)
        if title_list:
            model_list = re.compile("([A-Z a-z 0-9 -/]+)").findall(title_list[0])

    model = model_limit_length(model_list)
    data.update({'model': model})

    # 能效等级
    energy_list = re.compile("<dt>能效等级</dt><dd>(.*?)</dd>").findall(html_str)
    if not energy_list:
        energy_list = re.compile("能效等级：(.*?)</li>").findall(html_str)
    energy = energy_list[-1] if energy_list else ''
    data.update({'energy': energy})

    # 商品尺寸
    size_list = re.compile('<lititle=".*?".*?尺寸：(.*?)</li>').findall(html_str)
    if not size_list:
        size_list = re.compile("<dt>屏幕尺寸</dt><dd>(.*?)</dd>").findall(html_str)
    if not size_list:
        size_list = re.compile('<dt>包装尺寸</dt><dd>(.*?)</dd>').findall(html_str)
    if not size_list:
        size_list = re.compile('尺寸：(.*?)</li>').findall(html_str)

    size = size_list[-1] if size_list else ''
    data.update({'size': size})

    # 参数， 排风量
    parameter_list = re.compile('<dt>.*?排风量</dt><dd>(.*?)</dd>').findall(html_str)
    if not parameter_list:
        parameter_list = re.compile("<dt>额定热流量</dt><dd>(.*?)</dd>").findall(html_str)
    if not parameter_list:
        title_list = re.compile("<title>(.*?)</title>").findall(html_str)
        if title_list:
            parameter_list = re.compile("([0-9,\.]+KW)").findall(title_list[0])

    parameter = parameter_list[-1] if parameter_list else ''

    parameter_list2 = re.compile("<dt>火力大小</dt><dd>(.*?)</dd>").findall(html_str)
    if parameter_list2 and parameter:
        parameter = parameter + '-' + parameter_list2[-1]
    elif parameter_list2 and not parameter:
        parameter = parameter_list2[-1]
    data.update({'parameter': parameter})

    # 图片下载
    image_path = re.compile('jqimg="(.*?)"').findall(html_str)

    if not image_path:
        image_path = html_element.xpath('//div[contains(@class, "jqzoom main-img")]/img/@data-origin')

        if image_path:
            image_path = 'http:' + str(image_path[0]).replace('n0', 'n1').replace('.avif', '')
        else:
            image_path = ""
    else:
        image_path = image_path[0]
    data.update({'img_base64': image_path})

    return data
